// 具有类似数组的对象，本来就具有遍历接口，可以直接遍历。上面代码中，我们将它的遍历接口改成数组的Symbol.iterator属性，可以看到没有任何影响。


// 下面是另一个类似数组的对象调用数组的Symbol.iterator方法的例子。
let iterable = {
    0: 'a',
    1: 'b',
    2: 'c',
    length: 3, // 去除了length 也无法遍历，不再是类似数组对象
    [Symbol.iterator]: Array.prototype[Symbol.iterator]
};
for (let item of iterable) {
    console.log(item); // 'a', 'b', 'c'
}

// 注意，普通对象部署数组的Symbol.iterator方法，并无效果。
let iterable2 = {
    a: 'a',
    b: 'b',
    c: 'c',
    length: 3,
    [Symbol.iterator]: Array.prototype[Symbol.iterator]
};
for (let item of iterable2) {
    console.log(item); // undefined, undefined, undefined
}

// 总结：类似数组对象：键为number 索引，并有length属性。类似数组的值的形式可以通过 [Symbol.iterator]: Array.prototype[Symbol.iterator] 来直接通过for of 遍历
// 非类似数组的对象无法通过  [Symbol.iterator]: Array.prototype[Symbol.iterator] 来直接遍历